<?php

$app->get('/cliente/listar', function () use($app){
	$app->render('../web/pages/cliente/clienteListar.php');
});

$app->get('/nroOrdenConsulta/ingresar', function () use($app){
	$app->render('../web/pages/cliente/nroOrdenIngresar.php');
});

$app->get('/nroOrdenConsulta/verPosTecnico', function () use($app){
	$codCliente = $_GET['codCliente'];
	$nroOrden = $_GET['nroOrden'];
	$tarea = Tarea::buscarTareaPorNroOrden($nroOrden);
	$tiempoEstimado = 0;
	$nombreTecnico = null;
	$fecha = date('d/m/Y', time() - 60*60*3);
	if($tarea != false){
		if($fecha == $tarea->fechaInicio){
			if($tarea->idTecnico!=null){
				$cliente = Cliente::buscarCliente($tarea->idCliente);
				if($cliente->codCliente == $codCliente){
					$tecnico = Tecnico::buscarTecnico($tarea->idTecnico);
					$nombreTecnico = $tecnico->nombreApell;
					$_SESSION['idTecnico'] = $tecnico->idTecnico;
					$_SESSION['idCliente'] = $cliente->idCliente;
					$tareasAsignadas = Tarea::listarTareasAsignadasPorTecnico($tecnico->idTecnico);
					//se recorren las tareas hasta llegar a la tarea del nro de orden
					foreach ($tareasAsignadas as $tar) {
						if($tar->nroOrden == $nroOrden){
							break;
						}else{
							$tiempoEstimado = $tiempoEstimado + $tar->tipoTarea()->find_one()->duracion;
						}
					}
					
					$app->render('../web/pages/cliente/verPosTecnico.php', array('nombreTecnico' => $nombreTecnico,'tiempoEstimado' => $tiempoEstimado));	
				}else{
					$mensaje = 'No hay tarea en el sistema asociada a los datos ingresados';
					$app->render('../web/pages/cliente/nroOrdenIngresar.php', array('error' => $mensaje));
				}	
			}else{
				$mensaje = 'El técnico no ha sido asignado aún, por favor intente más tarde';
				$app->render('../web/pages/cliente/nroOrdenIngresar.php', array('info' => $mensaje));
			}
		}else{
			$mensaje = 'La tarea debe tener como fecha de inicio la fecha de hoy para poder realizar la consulta';
			$app->render('../web/pages/cliente/nroOrdenIngresar.php', array('info' => $mensaje));
		}
	}else{
		$mensaje = 'No hay tarea en el sistema asociada a los datos ingresados';
		$app->render('../web/pages/cliente/nroOrdenIngresar.php', array('error' => $mensaje));
	}
	
});

$app->get('/nroOrdenConsulta/obtenerPosicionesCliTecnico', function () use($app){
	$idTecnico = $_SESSION['idTecnico'];
	$idCliente = $_SESSION['idCliente'];
	$tecnico = Tecnico::buscarTecnico($idTecnico);
	$cliente = Cliente::buscarCliente($idCliente);
	$response = new stdClass();
	$response->datos[0]['latitud'] = $tecnico->latitud;
	$response->datos[0]['longitud'] = $tecnico->longitud;
	$response->datos[0]['nombreApell'] = $tecnico->nombreApell;
	$response->datos[1]['latitud'] = $cliente->latitud;
	$response->datos[1]['longitud'] = $cliente->longitud;
	$response->datos[1]['nombreApell'] = $cliente->nombreApell;
	echo json_encode($response);
});

$app->get('/cliente/listarJson', function (){
		$response = new stdClass();	
		$page = $_GET['page']; // get the requested page 
		$limit = $_GET['rows']; // get how many rows we want to have into the grid
    	$idEmpresa = $_SESSION['idEmpresa'];
    	$campoBusqueda = null;
		$valorBusqueda = null;
    	if(isset($_GET['searchField']) && isset($_GET['searchString'])){
    		$campoBusqueda = $_GET['searchField'];
    		$valorBusqueda = $_GET['searchString'];	
		}
    	$count = Cliente::getCantRows($idEmpresa);
    	if( $count >0 ) {
    		 $total_pages = ceil($count/$limit); 
		}else {
			 $total_pages = 1; 
		}
		if ($page > $total_pages) $page=$total_pages; 
		$start = $limit*$page - $limit; // do not put $limit*($page - 1)
		$clientes = Cliente::listarInicioFin($idEmpresa,$start, $limit, $campoBusqueda, $valorBusqueda);
    	$i = 0;
		$response->page = $page; 
		$response->total = $total_pages; 
		$response->records = $count;
		foreach ($clientes as $cli) {
    		$response->gridModel[$i]['idCliente']=$cli->idCliente;
			$response->gridModel[$i]['nombreApell']=$cli->nombreApell;
			$response->gridModel[$i]['identificacion']=$cli->identificacion;
			$response->gridModel[$i]['codCliente']=$cli->codCliente;
			$response->gridModel[$i]['departamento']=$cli->departamento;
			$response->gridModel[$i]['tipoIdentif']=$cli->tipoIdentificacion()->find_one()->descripcion;
			$response->gridModel[$i]['direccion']=$cli->direccion;
			$response->gridModel[$i]['calle']= substr($cli->direccion, 0, strpos($cli->direccion,","));
			$response->gridModel[$i]['localidad']=substr($cli->direccion,strpos($cli->direccion,",")+1, strpos($cli->direccion,",",strpos($cli->direccion,",")));
			$response->gridModel[$i]['provincia']=substr($cli->direccion,strpos($cli->direccion,",",strpos($cli->direccion,",")+1)+1,
			strpos(substr($cli->direccion,strpos($cli->direccion,",",strpos($cli->direccion,",")+1)+1),","));
			$i++;
		}
		echo json_encode($response);
	});
	
	$app->post('/cliente/administrar', function (){
		// http://maps.googleapis.com/maps/api/geocode/json?address=Elcondor2698,Rafael%20Calzada,Buenos%20Aires,Argentina&sensor=false
		$cliente = null;
		$idCliente = null;
		$idEmpresa = $_SESSION['idEmpresa'];
		if($_POST['id'] != "_empty" ){
			$idCliente = $_POST['id'];	
		}
		//traigo el cliente
		if($_POST['oper'] != "add"){
			$cliente = Cliente::buscarCliente($idCliente);
		}
		if($_POST['oper'] == "del"){
			Cliente::borrarCliente($idCliente);
		}else{
			//cliente nuevo
			if($cliente == null && $_POST['oper'] == "add"){
				//Control de unicidad po código
				$clienteAux = Cliente::buscarClientePorCodigo($idEmpresa, $_POST['codCliente']);
				if($clienteAux != false){
					$response = new stdClass();
					$response->estado = "ERROR";
					$response->errores = "Ya existe un cliente con el código " . $_POST['codCliente'];
					echo json_encode($response);
					return false;
				}
				//Control de unicidad por tipo id e identificacion
				$clienteAux = Cliente::buscarClientePorIdentificacion($idEmpresa, $_POST['tipoIdentif'], $_POST['identificacion']);
				if($clienteAux != false){
					$response = new stdClass();
					$response->estado = "ERROR";
					$response->errores = "Ya existe un cliente con la identificación " . $_POST['identificacion'];
					echo json_encode($response);
					return false;
				}
				$cliente = Model::factory('Cliente')->create();	
			}
			$latitud = $_POST['latitud'];
			$longitud = $_POST['longitud'];
			$direccion = $_POST['direccion'];
			if($latitud != "" && $longitud != ""){
				$cliente->direccion = $direccion;
				$cliente->codCliente = $_POST['codCliente'];
				$cliente->identificacion = $_POST['identificacion'];
				$cliente->nombreApell = $_POST['nombreApell'];
				$cliente->idTipoIdentificacion = $_POST['tipoIdentif'];
				$cliente->departamento = $_POST['departamento'];
				$cliente->idEmpresa = $idEmpresa;
				$cliente->latitud = $latitud;
				$cliente->longitud = $longitud;
				$cliente->borrado = 0;
				$cliente->save();
				$response = new stdClass();
				$response->estado = "OK";
				$response->info = "Datos de cliente ingresados correctamente. Código de cliente: " . $_POST['codCliente'];
				echo json_encode($response);
				return true;
			}else{
				$response = new stdClass();
				$response->estado = "ERROR";
				$response->errores = "No se encuentran las coordenadas de la direccion proporcionada";
				echo json_encode($response);
				return false;
			}
		}
	});
?>